#include <iostream>
#include <string>
using namespace std;

// class Person
// {
// public:
//     void print()
//     {
//         cout << _name << endl;
//     }
// protected:
//     string _name;
// private:
//     int _age;
// };

// class Student : public Person
// {
// protected:
//     int _stunum;
// };

// int main()
// {
//     Person p;
//     Student s;
//     p = s;
//     return 0;
// }

// class Person
// {
// public:
//     void print()
//     {
//         cout << _id << endl;
//     }
// protected:
//     string _name;
//     int _id = 1;
// };

// class Student : public Person
// {
// public:
//     void func()
//     {
//         cout << _id << endl;
//         cout << Person::_id << endl;
//     }
// protected:
//     int _stunum;
//     int _id = 2;
// };

// int main()
// {
//     Student s;
//     Person p = s;
//     s.func();
//     return 0;
// }


// class A
// {
// public:
//     void func()
//     {
//         cout << "func()" << endl;
//     }
// };

// class B : public A
// {
// public:
//     void func(int i)
//     {
//         A::func();
//         cout << "func(int i) " << i << endl;
//     } 
// };

// int main()
// {
//     B b;
//     return 0;
// }


// class Person
// {
// public:
//     Person(const char* name):_name(name){}
// protected:
//     string _name;
// };

// class Student : public Person
// {
// public:
//     Student(const char* name,int id):_id(id),Person(name)
//     {

//     }

//     void print()
//     {
//         cout << _id << endl;
//         cout << _name << endl;
//     }

// private:
//     int _id = 1;
// };

// int main()
// {
//     Student s("zhangshan",5);
//     s.print();
//     return 0;
// }

class A
{
public:
    int _a;
};

//class B : public A
class B : virtual public A
{
public:
    int _b;
};

//class C : public A
class C :  virtual public A
{
public:
    int _c;
};

class D : public B,public C
{
public:
    int _d;
};

int main()
{
    D d;
    d.B::_a = 1;
    d.C::_a = 2;
    d._b = 3;
    d._c = 4;
    d._d = 5;
    return 0;
}
